public class minSubArrayLen {
    public static int minSubArrayLen(int target, int[] nums) {
        int left = 0 , right = 0, sum = 0;

        // 保证刚开始能够顺利更新子数组长度
        int ret = Integer.MAX_VALUE;

        while(right < nums.length){

            // 裁员裁到大动脉, 需要补充大量新鲜血液
            while(sum < target){
                sum += nums[right];
                right++;
            }

            // 上面的循环一旦进不去，就意味着窗口刚好合适, 更新返回值
            ret = Math.min(ret, right - left + 1);

            // 找到全栈牛马圣体, 可以给很多摸鱼仔炒鱿鱼
            while(sum >= target){
                sum -= nums[left];
                left++;
            }
        }
        return ret;
    }

    public static void main(String[] args) {
        int[] nums = {2,3,1,2,4,3};
        int target = 7;
        int ret = minSubArrayLen(target, nums);
        System.out.println(ret);
    }
}
